package inabit.data.expression;

import inabit.base.WorkingMemory;
import inabit.data.Variable;

import java.util.List;
/**An expression that can execute and produces side effects.
 * @author Rafael Rocha*/
public abstract class ConsequentExpression extends Expression{
	/**Fires the consequent based on the truth degree, it also can affect variables
	 * at the working memory*/
	public abstract void fire(WorkingMemory wm, double truth) throws Exception;
	/**Returns variables which value is changed by this expression when fired*/
	public abstract List<Variable> getTargetVariables(WorkingMemory wm);
}
